package com.wkhyapp.lm.utils;

import android.content.Context;
import android.os.AsyncTask;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.wkhyapp.lm.weigit.GlideCircleTransform;
import com.wkhyapp.lm.weigit.GlideRoundTransform;

import jp.wasabeef.glide.transformations.BlurTransformation;

/**
 * Created by fangzehua on 2017/7/13.
 * 淘宝客项目
 * 邮箱:442947949@qq.com
 * QQ群:567598491
 */

public class ImageLoadUtil {


    /**
     * 用url加载图片
     *
     * @param context
     * @param url     图片地址
     * @param view    IMAGEVIEW
     */
    public static void setImage_Normal(Context context, String url, ImageView view) {
        Glide.with(context).load(url).into(view);
    }




    /**
     * 用url加载图片并且不采用缓存
     *
     * @param context
     * @param url     图片地址
     * @param view    IMAGEVIEW
     */
    public static void setImage_Normal_NoCache(Context context, String url, ImageView view) {
        Glide.with(context).load(url).skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE).into(view);
    }

    /**
     * 用url加载图片并且不采用缓存
     *
     * @param context
     * @param url     图片地址
     * @param view    IMAGEVIEW
     */
    public static void setImage_Normal_NoCache(Context context, String url, ImageView view, int id) {
        Glide.with(context).load(url).skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE).error(id).into(view);
    }



    /**
     * 用url加载图片，并且设置错误图片
     */
    public static void setImage_Normal(Context context, String url, ImageView view, int id) {
        Glide.with(context).load(url).placeholder(id).error(id).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(view);
    }

    /**
     * 用res资源加载图片
     *
     * @param context
     * @param resId   资源ID
     * @param view
     */
    public static void setImage_Normal(Context context, int resId, ImageView view) {
        Glide.with(context).load(resId).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(view);
    }


    /**
     * 毛玻璃
     * @param context
     * @param url
     * @param view
     */
    public static void setBlurTransformation (Context context, String url, ImageView view) {
        Glide.with(context).load(url)
                .bitmapTransform(new BlurTransformation(context, 14), new CenterCrop(context))
                .into(view);
    }





    /**
     * 加载圆角图片
     *
     * @param context
     * @param url     图片地址
     * @param radius  圆角的半径大小
     * @param view
     */
    public static void setRoundImage_Normal(Context context, String url, int radius, ImageView view) {
        Glide.with(context).load(url).bitmapTransform(new GlideRoundTransform(context, radius)).into(view);
    }

    /**
     * 加载圆角图片
     *
     * @param context
     * @param url     图片地址
     * @param radius  圆角的半径大小
     * @param view
     */
    public static void setRoundImage_Normal(Context context, String url, int radius, ImageView view, int error) {
        Glide.with(context).load(url).bitmapTransform(new GlideRoundTransform(context, radius)).error(error).into(view);
    }
    /**
     * 圆形
     *
     * @param context
     * @param url     图片地址
     * @param view
     */
    public static void setCirlcleImage_Normals(Context context, String url, ImageView view) {
        Glide.with(context).load(url).bitmapTransform(new GlideCircleTransform(context)).into(view);
    }

    /**
     * 圆形
     *
     * @param context
     * @param url     图片地址
     * @param view
     */
    public static void setCirlcleImage_Normal(Context context, String url, int errorResource, ImageView view) {
        Glide.with(context).load(url).bitmapTransform(new GlideCircleTransform(context)).error(errorResource).into(view);
    }


    public static void clearMemory(Context context) {
        Glide.get(context).clearMemory();
    }

    public static void clearDiskCache(final Context context) {
        new AsyncTask<Void, Integer, Void>() {
            @Override
            protected Void doInBackground(Void... params) {
                Glide.get(context).clearDiskCache();
                return null;
            }
        }.execute();

    }


}
